package com.wyy.treeview.core;

import java.util.ArrayList;
import java.util.List;

import android.util.Log;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;

/**
 * 解析json工具类--采用gson框架
 * 
 * @author yancey
 * 
 */
public class GsonUtil {
	private final String TAG = this.getClass().getSimpleName();
	private static Gson gson = new Gson();

	/** gson解析对象 */
	public static <T> T getParserData(String json, Class<T> clazz) {
		T t = null;
		try {
			t = gson.fromJson(json, clazz);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return t;
	}

	/** gson解析对象list，默认memberName为cboset */
	public static <T> List<T> getParserList(String json, Class<T> clazz) {
		String memberName = "cboset";
		return getParserList(json, memberName, clazz);
	}

	/** gson解析对象list，按需要传递memberName */
	public static <T> List<T> getParserList(String json, String memberName,
			Class<T> clazz) {
		List<T> list = new ArrayList<T>();
		try {
			JsonArray jsonArray = new JsonParser().parse(json)
					.getAsJsonObject().getAsJsonArray(memberName);
			for (JsonElement jsonElement : jsonArray) {
				list.add(getParserData(jsonElement.toString(), clazz));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

	/** 判断是否为有效的json格式数据 */
	public static boolean isValidJson(String json) {
		if (json.equals("")) {
			Log.d("GsonUtil", "json数据为空！！！");
			return false;
		}
		try {
			JsonElement jsonElement = new JsonParser().parse(json);
			return jsonElement.isJsonObject() || jsonElement.isJsonArray();
		} catch (JsonSyntaxException e) {
			Log.d("GsonUtil", json + "is invalid json str", e);
		}

		return false;
	}


}
